/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.nys.conci.citas.bean;

import com.nys.conci.backend.servicio.ControlCorreo;
import com.nys.conci.base.BeanBase;
import com.nys.conci.base.excepcion.ExcepcionManager;
import com.nys.conci.base.utilitario.EtiquetasUtil;
import com.nys.conci.base.utilitario.FechaUtil;
import com.nys.conci.base.utilitario.MensajeUtil;
import com.nys.conci.citas.entidad.ControlCita;
import com.nys.conci.citas.entidad.EstadoCita;
import com.nys.conci.citas.modelo.ModeloCitas;
import com.nys.conci.citas.servicio.ServicioControlCitas;
import com.nys.conci.cliente.entidad.Persona;
import com.nys.conci.cliente.entidad.PlanPago;
import com.nys.conci.usuario.entidad.Especialidad;
import com.nys.conci.usuario.entidad.Usuario;
import com.nys.conci.usuario.servicio.ServicioAdministracion;
import com.nys.conci.usuario.servicio.ServicioControlUsuario;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.mail.Message;
import javax.mail.internet.InternetAddress;

/**
 *
 * @author Yeudy10
 * @since 13/02/2012
 */
@ManagedBean
@ViewScoped
public class BeanConsultaCitas extends BeanBase {

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<     VARIABLES     >>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    @Inject
    private ServicioControlUsuario scu;
    @Inject
    private ServicioControlCitas scc;
    @Inject
    private ServicioAdministracion sa;
    @Inject
    private ControlCorreo cc;
    private List<ModeloCitas> listado_citas_antiguas;
    private List<ModeloCitas> listado_citas_actuales;
    private List<ModeloCitas> listado_citas_proximas;
    private List<EstadoCita> lista_estados;
    private List<PlanPago> lista_planes;
    private List<Especialidad> lista_especialidades;
    private String tab;
    private Integer especialidadAnt;
    private Integer especialidadAct;
    private Integer especialidadPro;
    private Integer estadoAnt;
    private Integer estadoAct;
    private Integer estadoPro;
    private Integer planAnt;
    private Integer planAct;
    private Integer planPro;
    private Date fechaAnt;
    private Date fechaPro;
    private Date fecha_minima;
    private Date fecha_actual;
    private Date fecha_maxima;
    private ModeloCitas modelo_citas_actuales;
    private ModeloCitas modelo_citas_proximas;
    private ModeloCitas modelo_citas_actuales_select;
    private ModeloCitas modelo_citas_proximas_select;
    private boolean mostrar_modelo_ant;
    private boolean mostrar_modelo_act;
    private boolean mostrar_modelo_pro;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<  INICIALIZARORES  >>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    /**
     * Constructor
     */
    public BeanConsultaCitas() {
        this.inicializar();
    }

    /**
     * Inicializa las variables del bean, al acceder al constructor
     */
    private void inicializar() {
        try {
            mostrar_modelo_act = false;
            mostrar_modelo_ant = false;
            mostrar_modelo_pro = false;
            modelo_citas_actuales = new ModeloCitas();
            modelo_citas_actuales_select = new ModeloCitas();
            modelo_citas_proximas = new ModeloCitas();
            modelo_citas_proximas_select = new ModeloCitas();
            fecha_maxima = new Date(FechaUtil.getFechaActual().getTime() + 86400000);
            fecha_actual = new Date();
            fecha_minima = new Date(FechaUtil.getFechaActual().getTime() - 86400000);
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    /**
     * Inicializas las variables y atributos del bean, despues del llamado del
     * constructor. Es utilizado para las inicializaciones que utilicen datos de
     * objetos injectados.
     */
    @Override
    @PostConstruct
    public void inicializarPost() {
        cargarCitasActuales();
        cargarCitasAntiguas();
        cargarCitasProximas();
        cargarPlanesPago();
        cargarEspecialidades();
        cargarEstados();

    }

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<      MÉTODOS      >>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<   
    public void cargarPlanesPago() {
        try {
            lista_planes = new ArrayList<PlanPago>();
            lista_planes = sa.consultarListaPlanesPago();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void cargarEspecialidades() {
        try {
            lista_especialidades = new ArrayList<Especialidad>();
            lista_especialidades = sa.consultarListaEspecialidades();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void enviarNotificaciones() {
        try {
            if (validaFechaEstado()) {
                cargarCitasProximas();
                if (listado_citas_proximas != null && !listado_citas_proximas.isEmpty()) {
                    for (ModeloCitas modeloCitas : listado_citas_proximas) {
                        if (modeloCitas.getNotificada() == null || !modeloCitas.getNotificada().equals("S")) {
                            Persona persona = new Persona();
                            persona = scu.consultarPersona(modeloCitas.getIdentificacion_c());

                            String asunto = "Recordatorio Cita";

                            String cuerpo = "<div style='background: #A9E2F3; width: 450px; border-style: ridge; border-radius: 20px' >"
                                    + "<div style='width: 400px'>"
                                    + "<h2 style='color: #FE9A2E'>Recordatorio cita</h2>"
                                    + "<hr>"
                                    + "</div>"
                                    + "<table> "
                                    + "<tr> "
                                    + "<td> "
                                    + "<h3 style='color: #0040FF'>Estimado(a):" + persona.getNombre() + " " + persona.getApellido1() + " " + persona.getApellido2() + "</h3> "
                                    + "<h4 style='color: #0040FF'>El día <a style='color: #FF8000'>"
                                    + FechaUtil.obtenerDiaDelMes(modeloCitas.getFechareal()) + " de "
                                    + FechaUtil.obtenerNombreMes(FechaUtil.obtenerMesDelAnno(modeloCitas.getFechareal()))
                                    + " del " + FechaUtil.obtenerAnno(modeloCitas.getFechareal())
                                    + "</a> tiene una cita de " + sa.consultarEspecialidad(modeloCitas.getId_especialidad()).getNombre() + " " + sa.consultarEstadoCita(modeloCitas.getId_estado_cita()).getNombre() + "</h4> "
                                    + "<h4 style='color: #0040FF'>A las <a style='color: #FF8000'>" + modeloCitas.getHora() + "</a> horas</h4>"
                                    + "<h4 style='color: #0040FF'>Saludos cordiales!!!</h4>"
                                    + "</td> "
                                    + "</tr>"
                                    + "</table>"
                                    + "</div>";
                            HashMap<Message.RecipientType, InternetAddress[]> hasSet = new HashMap<Message.RecipientType, InternetAddress[]>();
                            hasSet.put(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress(persona.getEmail())});
                            cc.initServicioCorreo(asunto, cuerpo, hasSet);
                            cc.enviarCorreo();

                            modeloCitas.setNotificada("S");
                            scc.guardarCita(modeloCitas.toControlCitas(), true);
                        }
                    }
                    String mensaje = "Las citas han sido notificadas";
                    MensajeUtil.agregarMensajeInfo(mensaje);
                } else {
                    String mensaje = "No existen citas para notificar con la fecha y el estado seleccionado";
                    MensajeUtil.agregarMensajeError(mensaje);
                }
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public boolean validaFechaEstado() {
        boolean resultado = true;
        if (fechaPro == null) {
            String mensaje = EtiquetasUtil.obtenerEtiqueta("campo.requerido.parametro", "Fecha");
            MensajeUtil.agregarMensajeErrorComponente("form_conci:input_fecha_pro", mensaje);
            resultado = false;
        }
        if (estadoPro == null || estadoPro == 0) {
            String mensaje = EtiquetasUtil.obtenerEtiqueta("campo.requerido.parametro", "Estado");
            MensajeUtil.agregarMensajeErrorComponente("form_conci:id_estado_pro", mensaje);
            resultado = false;
        }
        return resultado;
    }

    public void cargarEstados() {
        try {
            lista_estados = new ArrayList<EstadoCita>();
            lista_estados = sa.consultarListaEstadoCita();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void cargarCitasAntiguas() {
        try {
            listado_citas_antiguas = new ArrayList<ModeloCitas>();
            List<ControlCita> lista = new ArrayList<ControlCita>();
            lista = scc.consultarListaCitasAntiguas(null, null, null, null);
            for (ControlCita controlCita : lista) {
                ModeloCitas modelo = new ModeloCitas();
                modelo.setId_cita(controlCita.getId_cita());
                modelo.setDscEstado(sa.consultarEstadoCita(controlCita.getId_estado_cita()).getNombre());
                modelo.setFechareal(controlCita.getFechareal());
                modelo.setHora(controlCita.getHora());
                modelo.setId_estado_cita(controlCita.getId_estado_cita());
                modelo.setId_plan_cliente(controlCita.getId_plan_cliente());
                modelo.setId_especialidad(controlCita.getId_especialidad());
                modelo.setIdentificacion_c(controlCita.getIdentificacion_c());
                modelo.setIdentificacion_u(controlCita.getIdentificacion_u());
                modelo.setEstado_pago(controlCita.getEstado_pago());
                modelo.setDiagnostico(controlCita.getDiagnostico());
                Persona per_c = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_c != null) {
                    modelo.setNombre_cliente(per_c.getNombre() + " " + per_c.getApellido1() + " " + per_c.getApellido2());
                }
                Persona per_u = scu.consultarPersona(controlCita.getIdentificacion_u());
                if (per_u != null) {
                    modelo.setNombre_usuario(per_u.getNombre() + " " + per_u.getApellido1() + " " + per_u.getApellido2());
                }

                listado_citas_antiguas.add(modelo);
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void cargarCitasActuales() {
        try {
            listado_citas_actuales = new ArrayList<ModeloCitas>();
            List<ControlCita> lista = new ArrayList<ControlCita>();
            lista = scc.consultarListaCitasActuales(null, null, null);
            for (ControlCita controlCita : lista) {
                ModeloCitas modelo = new ModeloCitas();
                modelo.setId_cita(controlCita.getId_cita());
                modelo.setDscEstado(sa.consultarEstadoCita(controlCita.getId_estado_cita()).getNombre());
                modelo.setFechareal(controlCita.getFechareal());
                modelo.setHora(controlCita.getHora());
                modelo.setId_estado_cita(controlCita.getId_estado_cita());
                modelo.setId_plan_cliente(controlCita.getId_plan_cliente());
                modelo.setId_especialidad(controlCita.getId_especialidad());
                modelo.setIdentificacion_c(controlCita.getIdentificacion_c());
                modelo.setIdentificacion_u(controlCita.getIdentificacion_u());
                modelo.setEstado_pago(controlCita.getEstado_pago());
                modelo.setDiagnostico(controlCita.getDiagnostico());
                Persona per_c = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_c != null) {
                    modelo.setNombre_cliente(per_c.getNombre() + " " + per_c.getApellido1() + " " + per_c.getApellido2());
                }
                Persona per_u = scu.consultarPersona(controlCita.getIdentificacion_u());
                if (per_u != null) {
                    modelo.setNombre_usuario(per_u.getNombre() + " " + per_u.getApellido1() + " " + per_u.getApellido2());
                }

                listado_citas_actuales.add(modelo);
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void cargarCitasProximas() {
        try {
            listado_citas_proximas = new ArrayList<ModeloCitas>();
            List<ControlCita> lista = new ArrayList<ControlCita>();
            lista = scc.consultarListaCitasProximas(fechaPro, planPro, estadoPro, especialidadPro);
            for (ControlCita controlCita : lista) {
                ModeloCitas modelo = new ModeloCitas();
                modelo.setId_cita(controlCita.getId_cita());
                modelo.setDscEstado(sa.consultarEstadoCita(controlCita.getId_estado_cita()).getNombre());
                modelo.setFechareal(controlCita.getFechareal());
                modelo.setHora(controlCita.getHora());
                modelo.setId_estado_cita(controlCita.getId_estado_cita());
                modelo.setId_plan_cliente(controlCita.getId_plan_cliente());
                modelo.setId_especialidad(controlCita.getId_especialidad());
                modelo.setIdentificacion_c(controlCita.getIdentificacion_c());
                modelo.setIdentificacion_u(controlCita.getIdentificacion_u());
                modelo.setEstado_pago(controlCita.getEstado_pago());
                modelo.setNotificada(controlCita.getNotificada());
                modelo.setDiagnostico(controlCita.getDiagnostico());
                Persona per_c = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_c != null) {
                    modelo.setNombre_cliente(per_c.getNombre() + " " + per_c.getApellido1() + " " + per_c.getApellido2());
                }
                Persona per_u = scu.consultarPersona(controlCita.getIdentificacion_u());
                if (per_u != null) {
                    modelo.setNombre_usuario(per_u.getNombre() + " " + per_u.getApellido1() + " " + per_u.getApellido2());
                }
                listado_citas_proximas.add(modelo);
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void cambiarTab() {
        try {
            cargarCitasActuales();
            cargarCitasAntiguas();
            cargarCitasProximas();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void limpiarAntiguas() {
        try {
            estadoAnt = null;
            planAnt = null;
            fechaAnt = null;
            especialidadAnt = null;
            cargarCitasAntiguas();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void limpiarActuales() {
        try {
            estadoAct = null;
            planAct = null;
            especialidadAct = null;
            modelo_citas_actuales = new ModeloCitas();
            modelo_citas_actuales_select = new ModeloCitas();
            cargarCitasActuales();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void limpiarProximas() {
        try {
            estadoPro = null;
            planPro = null;
            fechaPro = null;
            especialidadPro = null;
            modelo_citas_proximas = new ModeloCitas();
            modelo_citas_proximas_select = new ModeloCitas();
            cargarCitasProximas();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void consultarAntiguas() {
        try {
            listado_citas_antiguas = new ArrayList<ModeloCitas>();
            List<ControlCita> lista = new ArrayList<ControlCita>();
            if (fechaAnt != null) {
                if (fechaAnt.after(FechaUtil.getFechaActualSinHora()) || fechaAnt.equals(FechaUtil.getFechaActualSinHora())) {
                    String mensaje = "La fecha de consulta tiene que ser anterior a la fecha actual";
                    MensajeUtil.agregarMensajeAdvertencia(mensaje);
                    return;
                }
            }
            lista = scc.consultarListaCitasAntiguas(fechaAnt, planAnt, estadoAnt, especialidadAnt);
            for (ControlCita controlCita : lista) {
                ModeloCitas modelo = new ModeloCitas();
                modelo.setId_cita(controlCita.getId_cita());
                modelo.setDscEstado(sa.consultarEstadoCita(controlCita.getId_estado_cita()).getNombre());
                modelo.setFechareal(controlCita.getFechareal());
                modelo.setHora(controlCita.getHora());
                modelo.setId_estado_cita(controlCita.getId_estado_cita());
                modelo.setId_plan_cliente(controlCita.getId_plan_cliente());
                modelo.setId_especialidad(controlCita.getId_especialidad());
                modelo.setIdentificacion_c(controlCita.getIdentificacion_c());
                modelo.setIdentificacion_u(controlCita.getIdentificacion_u());
                modelo.setEstado_pago(controlCita.getEstado_pago());
                modelo.setDiagnostico(controlCita.getDiagnostico());
                Persona per_c = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_c != null) {
                    modelo.setNombre_cliente(per_c.getNombre() + " " + per_c.getApellido1() + " " + per_c.getApellido2());
                }
                Persona per_u = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_u != null) {
                    modelo.setNombre_usuario(per_u.getNombre() + " " + per_u.getApellido1() + " " + per_u.getApellido2());
                }
                listado_citas_antiguas.add(modelo);
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void consultarActuales() {
        try {
            listado_citas_actuales = new ArrayList<ModeloCitas>();
            List<ControlCita> lista = new ArrayList<ControlCita>();
            lista = scc.consultarListaCitasActuales(planAct, estadoAct, especialidadAct);
            for (ControlCita controlCita : lista) {
                ModeloCitas modelo = new ModeloCitas();
                modelo.setId_cita(controlCita.getId_cita());
                modelo.setDscEstado(sa.consultarEstadoCita(controlCita.getId_estado_cita()).getNombre());
                modelo.setFechareal(controlCita.getFechareal());
                modelo.setHora(controlCita.getHora());
                modelo.setId_estado_cita(controlCita.getId_estado_cita());
                modelo.setId_plan_cliente(controlCita.getId_plan_cliente());
                modelo.setId_especialidad(controlCita.getId_especialidad());
                modelo.setIdentificacion_c(controlCita.getIdentificacion_c());
                modelo.setIdentificacion_u(controlCita.getIdentificacion_u());
                modelo.setEstado_pago(controlCita.getEstado_pago());
                modelo.setDiagnostico(controlCita.getDiagnostico());
                Persona per_c = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_c != null) {
                    modelo.setNombre_cliente(per_c.getNombre() + " " + per_c.getApellido1() + " " + per_c.getApellido2());
                }
                Persona per_u = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_u != null) {
                    modelo.setNombre_usuario(per_u.getNombre() + " " + per_u.getApellido1() + " " + per_u.getApellido2());
                }
                listado_citas_actuales.add(modelo);
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void consultarProximas() {
        try {
            listado_citas_proximas = new ArrayList<ModeloCitas>();
            List<ControlCita> lista = new ArrayList<ControlCita>();
            if (fechaPro != null) {
                if (fechaPro.before(FechaUtil.getFechaActualSinHora()) || fechaPro.equals(FechaUtil.getFechaActualSinHora())) {
                    String mensaje = "La fecha de consulta tiene que ser posterior a la fecha actual";
                    MensajeUtil.agregarMensajeAdvertencia(mensaje);
                    return;
                }
            }
            lista = scc.consultarListaCitasProximas(fechaPro, planPro, estadoPro, especialidadPro);
            for (ControlCita controlCita : lista) {
                ModeloCitas modelo = new ModeloCitas();
                modelo.setId_cita(controlCita.getId_cita());
                modelo.setDscEstado(sa.consultarEstadoCita(controlCita.getId_estado_cita()).getNombre());
                modelo.setFechareal(controlCita.getFechareal());
                modelo.setHora(controlCita.getHora());
                modelo.setId_estado_cita(controlCita.getId_estado_cita());
                modelo.setId_plan_cliente(controlCita.getId_plan_cliente());
                modelo.setId_especialidad(controlCita.getId_especialidad());
                modelo.setIdentificacion_c(controlCita.getIdentificacion_c());
                modelo.setIdentificacion_u(controlCita.getIdentificacion_u());
                modelo.setEstado_pago(controlCita.getEstado_pago());
                modelo.setDiagnostico(controlCita.getDiagnostico());
                Persona per_c = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_c != null) {
                    modelo.setNombre_cliente(per_c.getNombre() + " " + per_c.getApellido1() + " " + per_c.getApellido2());
                }
                Persona per_u = scu.consultarPersona(controlCita.getIdentificacion_c());
                if (per_u != null) {
                    modelo.setNombre_usuario(per_u.getNombre() + " " + per_u.getApellido1() + " " + per_u.getApellido2());
                }

                listado_citas_proximas.add(modelo);
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void modificarActuales() {
        try {
            modelo_citas_actuales_select = modelo_citas_actuales;
            if (modelo_citas_actuales_select.getId_plan_cliente() != null && modelo_citas_actuales_select.getId_plan_cliente() != 0) {
                PlanPago pago = scc.consultarPlanPagoCliente(modelo_citas_actuales_select.getId_plan_cliente());
                if (pago != null) {
                    modelo_citas_actuales_select.setId_plan_pago(pago.getId_plan_pago());
                }
            }
            mostrar_modelo_act = true;
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void modificarproximas() {
        try {
            modelo_citas_proximas_select = modelo_citas_proximas;
            if (modelo_citas_proximas_select.getId_plan_cliente() != null && modelo_citas_proximas_select.getId_plan_cliente() != 0) {
                PlanPago pago = scc.consultarPlanPagoCliente(modelo_citas_proximas_select.getId_plan_cliente());
                if (pago != null) {
                    modelo_citas_proximas_select.setId_plan_pago(pago.getId_plan_pago());
                }
            }

            mostrar_modelo_pro = true;
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void guardarActuales() {
        try {
            if (validarActuales()) {
                scc.guardarCita(modelo_citas_actuales_select.toControlCitas(), mostrar_modelo_act);
                modelo_citas_actuales_select = new ModeloCitas();
                modelo_citas_actuales = new ModeloCitas();
                mostrar_modelo_act = false;
//                limpiarActuales();
//                limpiarAntiguas();
//                limpiarProximas();
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public boolean validarActuales() {
        boolean resultado = true;
        if (modelo_citas_actuales_select.getId_estado_cita() == null || modelo_citas_actuales_select.getId_estado_cita() == 0) {
            String mensaje = "El estado de la cita no puede quedar vacio";
            MensajeUtil.agregarMensajeError(mensaje);
            resultado = false;
        }

        if (modelo_citas_actuales_select.getId_especialidad() == null || modelo_citas_actuales_select.getId_especialidad() == 0) {
            String mensaje = "La especialidad de la cita no puede quedar vacio";
            MensajeUtil.agregarMensajeError(mensaje);
            resultado = false;
        }

        if (modelo_citas_actuales_select.getFechareal() == null) {
            String mensaje = "La fecha de la cita no puede quedar vacio";
            MensajeUtil.agregarMensajeError(mensaje);
            resultado = false;
        }
        if (modelo_citas_actuales_select.getHora() == null) {
            String mensaje = "La hora de la cita no puede quedar vacio";
            MensajeUtil.agregarMensajeError(mensaje);
            resultado = false;
        }

        return resultado;
    }

    public void guardarProximas() {
        try {
            if (validarProximas()) {
                scc.guardarCita(modelo_citas_proximas_select.toControlCitas(), mostrar_modelo_pro);
                modelo_citas_proximas_select = new ModeloCitas();
                modelo_citas_proximas = new ModeloCitas();
                mostrar_modelo_pro = false;
//                limpiarActuales();
//                limpiarAntiguas();
//                limpiarProximas();
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public boolean validarProximas() {
        boolean resultado = true;
        if (modelo_citas_proximas_select.getId_estado_cita() == null || modelo_citas_proximas_select.getId_estado_cita() == 0) {
            String mensaje = "El estado de la cita no puede quedar vacio";
            MensajeUtil.agregarMensajeError(mensaje);
            resultado = false;
        }


        if (modelo_citas_proximas_select.getId_especialidad() == null || modelo_citas_proximas_select.getId_especialidad() == 0) {
            String mensaje = "La especialidad de la cita no puede quedar vacio";
            MensajeUtil.agregarMensajeError(mensaje);
            resultado = false;
        }

        if (modelo_citas_proximas_select.getFechareal() == null) {
            String mensaje = "La fecha de la cita no puede quedar vacio";
            MensajeUtil.agregarMensajeError(mensaje);
            resultado = false;
        }

        if (modelo_citas_proximas_select.getHora() == null) {
            String mensaje = "La hora de la cita no puede quedar vacio";
            MensajeUtil.agregarMensajeError(mensaje);
            resultado = false;
        }


        return resultado;
    }

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<      GET & SET      >>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<    
    /**
     * @return the listado_citas_antiguas
     */
    public List<ModeloCitas> getListado_citas_antiguas() {
        return listado_citas_antiguas;
    }

    /**
     * @param listado_citas_antiguas the listado_citas_antiguas to set
     */
    public void setListado_citas_antiguas(List<ModeloCitas> listado_citas_antiguas) {
        this.listado_citas_antiguas = listado_citas_antiguas;
    }

    /**
     * @return the listado_citas_actuales
     */
    public List<ModeloCitas> getListado_citas_actuales() {
        return listado_citas_actuales;
    }

    /**
     * @param listado_citas_actuales the listado_citas_actuales to set
     */
    public void setListado_citas_actuales(List<ModeloCitas> listado_citas_actuales) {
        this.listado_citas_actuales = listado_citas_actuales;
    }

    /**
     * @return the listado_citas_proximas
     */
    public List<ModeloCitas> getListado_citas_proximas() {
        return listado_citas_proximas;
    }

    /**
     * @param listado_citas_proximas the listado_citas_proximas to set
     */
    public void setListado_citas_proximas(List<ModeloCitas> listado_citas_proximas) {
        this.listado_citas_proximas = listado_citas_proximas;
    }

    /**
     * @return the modelo_citas_actuales
     */
    public ModeloCitas getModelo_citas_actuales() {
        return modelo_citas_actuales;
    }

    /**
     * @param modelo_citas_actuales the modelo_citas_actuales to set
     */
    public void setModelo_citas_actuales(ModeloCitas modelo_citas_actuales) {
        this.modelo_citas_actuales = modelo_citas_actuales;
    }

    /**
     * @return the modelo_citas_proximas
     */
    public ModeloCitas getModelo_citas_proximas() {
        return modelo_citas_proximas;
    }

    /**
     * @param modelo_citas_proximas the modelo_citas_proximas to set
     */
    public void setModelo_citas_proximas(ModeloCitas modelo_citas_proximas) {
        this.modelo_citas_proximas = modelo_citas_proximas;
    }

    /**
     * @return the lista_estados
     */
    public List<EstadoCita> getLista_estados() {
        return lista_estados;
    }

    /**
     * @param lista_estados the lista_estados to set
     */
    public void setLista_estados(List<EstadoCita> lista_estados) {
        this.setLista_estados(lista_estados);
    }

    /**
     * @return the estadoAnt
     */
    public Integer getEstadoAnt() {
        return estadoAnt;
    }

    /**
     * @param estadoAnt the estadoAnt to set
     */
    public void setEstadoAnt(Integer estadoAnt) {
        this.estadoAnt = estadoAnt;
    }

    /**
     * @return the estadoAct
     */
    public Integer getEstadoAct() {
        return estadoAct;
    }

    /**
     * @param estadoAct the estadoAct to set
     */
    public void setEstadoAct(Integer estadoAct) {
        this.estadoAct = estadoAct;
    }

    /**
     * @return the estadoPro
     */
    public Integer getEstadoPro() {
        return estadoPro;
    }

    /**
     * @param estadoPro the estadoPro to set
     */
    public void setEstadoPro(Integer estadoPro) {
        this.estadoPro = estadoPro;
    }

    /**
     * @return the planAnt
     */
    public Integer getPlanAnt() {
        return planAnt;
    }

    /**
     * @param planAnt the planAnt to set
     */
    public void setPlanAnt(Integer planAnt) {
        this.planAnt = planAnt;
    }

    /**
     * @return the planAct
     */
    public Integer getPlanAct() {
        return planAct;
    }

    /**
     * @param planAct the planAct to set
     */
    public void setPlanAct(Integer planAct) {
        this.planAct = planAct;
    }

    /**
     * @return the planPro
     */
    public Integer getPlanPro() {
        return planPro;
    }

    /**
     * @param planPro the planPro to set
     */
    public void setPlanPro(Integer planPro) {
        this.planPro = planPro;
    }

    /**
     * @return the fechaAnt
     */
    public Date getFechaAnt() {
        return fechaAnt;
    }

    /**
     * @param fechaAnt the fechaAnt to set
     */
    public void setFechaAnt(Date fechaAnt) {
        this.fechaAnt = fechaAnt;
    }

    /**
     * @return the fechaPro
     */
    public Date getFechaPro() {
        return fechaPro;
    }

    /**
     * @param fechaPro the fechaPro to set
     */
    public void setFechaPro(Date fechaPro) {
        this.fechaPro = fechaPro;
    }

    /**
     * @return the lista_planes
     */
    public List<PlanPago> getLista_planes() {
        return lista_planes;
    }

    /**
     * @param lista_planes the lista_planes to set
     */
    public void setLista_planes(List<PlanPago> lista_planes) {
        this.lista_planes = lista_planes;
    }

    /**
     * @return the modelo_citas_actuales_select
     */
    public ModeloCitas getModelo_citas_actuales_select() {
        return modelo_citas_actuales_select;
    }

    /**
     * @param modelo_citas_actuales_select the modelo_citas_actuales_select to
     * set
     */
    public void setModelo_citas_actuales_select(ModeloCitas modelo_citas_actuales_select) {
        this.modelo_citas_actuales_select = modelo_citas_actuales_select;
    }

    /**
     * @return the modelo_citas_proximas_select
     */
    public ModeloCitas getModelo_citas_proximas_select() {
        return modelo_citas_proximas_select;
    }

    /**
     * @param modelo_citas_proximas_select the modelo_citas_proximas_select to
     * set
     */
    public void setModelo_citas_proximas_select(ModeloCitas modelo_citas_proximas_select) {
        this.modelo_citas_proximas_select = modelo_citas_proximas_select;
    }

    /**
     * @return the mostrar_modelo_ant
     */
    public boolean isMostrar_modelo_ant() {
        return mostrar_modelo_ant;
    }

    /**
     * @param mostrar_modelo_ant the mostrar_modelo_ant to set
     */
    public void setMostrar_modelo_ant(boolean mostrar_modelo_ant) {
        this.mostrar_modelo_ant = mostrar_modelo_ant;
    }

    /**
     * @return the mostrar_modelo_act
     */
    public boolean isMostrar_modelo_act() {
        return mostrar_modelo_act;
    }

    /**
     * @param mostrar_modelo_act the mostrar_modelo_act to set
     */
    public void setMostrar_modelo_act(boolean mostrar_modelo_act) {
        this.mostrar_modelo_act = mostrar_modelo_act;
    }

    /**
     * @return the mostrar_modelo_pro
     */
    public boolean isMostrar_modelo_pro() {
        return mostrar_modelo_pro;
    }

    /**
     * @param mostrar_modelo_pro the mostrar_modelo_pro to set
     */
    public void setMostrar_modelo_pro(boolean mostrar_modelo_pro) {
        this.mostrar_modelo_pro = mostrar_modelo_pro;
    }

    /**
     * @return the lista_especialidades
     */
    public List<Especialidad> getLista_especialidades() {
        return lista_especialidades;
    }

    /**
     * @param lista_especialidades the lista_especialidades to set
     */
    public void setLista_especialidades(List<Especialidad> lista_especialidades) {
        this.lista_especialidades = lista_especialidades;
    }

    /**
     * @return the especialidadAnt
     */
    public Integer getEspecialidadAnt() {
        return especialidadAnt;
    }

    /**
     * @param especialidadAnt the especialidadAnt to set
     */
    public void setEspecialidadAnt(Integer especialidadAnt) {
        this.especialidadAnt = especialidadAnt;
    }

    /**
     * @return the especialidadAct
     */
    public Integer getEspecialidadAct() {
        return especialidadAct;
    }

    /**
     * @param especialidadAct the especialidadAct to set
     */
    public void setEspecialidadAct(Integer especialidadAct) {
        this.especialidadAct = especialidadAct;
    }

    /**
     * @return the especialidadPro
     */
    public Integer getEspecialidadPro() {
        return especialidadPro;
    }

    /**
     * @param especialidadPro the especialidadPro to set
     */
    public void setEspecialidadPro(Integer especialidadPro) {
        this.especialidadPro = especialidadPro;
    }

    /**
     * @return the tab
     */
    public String getTab() {
        return tab;
    }

    /**
     * @param tab the tab to set
     */
    public void setTab(String tab) {
        this.tab = tab;
    }

    /**
     * @return the fecha_minima
     */
    public Date getFecha_minima() {
        return fecha_minima;
    }

    /**
     * @param fecha_minima the fecha_minima to set
     */
    public void setFecha_minima(Date fecha_minima) {
        this.fecha_minima = fecha_minima;
    }

    /**
     * @return the fecha_maxima
     */
    public Date getFecha_maxima() {
        return fecha_maxima;
    }

    /**
     * @param fecha_maxima the fecha_maxima to set
     */
    public void setFecha_maxima(Date fecha_maxima) {
        this.fecha_maxima = fecha_maxima;
    }

    /**
     * @return the fecha_actual
     */
    public Date getFecha_actual() {
        return fecha_actual;
    }

    /**
     * @param fecha_actual the fecha_actual to set
     */
    public void setFecha_actual(Date fecha_actual) {
        this.fecha_actual = fecha_actual;
    }
}
